#include <stdio.h>
#include <stdlib.h>

// 合并两个有序数组
void mergeSortedArrays(int* LA, int sizeLA, int* LB, int sizeLB, int* LC) {
    int i = 0, j = 0, k = 0;

    // 遍历两个数组，将较小的元素放入新数组
    while (i < sizeLA && j < sizeLB) {
        if (LA[i] < LB[j]) {
            LC[k++] = LA[i++];
        } else {
            LC[k++] = LB[j++];
        }
    }

    // 复制第一个数组中剩余的元素
    while (i < sizeLA) {
        LC[k++] = LA[i++];
    }

    // 复制第二个数组中剩余的元素
    while (j < sizeLB) {
        LC[k++] = LB[j++];
    }
}

// 打印数组
void printArray(int* arr, int size) {
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
}

// 检查数组是否有序
int isArraySorted(int* arr, int size) {
    for (int i = 0; i < size - 1; i++) {
        if (arr[i] > arr[i + 1]) {
            return 0; // 不是有序的
        }
    }
    return 1; // 是有序的
}

int main() {
    int sizeLA, sizeLB;
    
    // 输入第一个数组
    printf("请输入第一个有序数组的大小: ");
    scanf("%d", &sizeLA);
    int LA[sizeLA];
    printf("请输入%d个有序的整数(从小到大): ", sizeLA);
    for (int i = 0; i < sizeLA; i++) {
        scanf("%d", &LA[i]);
    }
    
    // 检查第一个数组是否有序
    if (!isArraySorted(LA, sizeLA)) {
        printf("错误：第一个数组不是有序的！\n");
        return 1;
    }
    
    // 输入第二个数组
    printf("请输入第二个有序数组的大小: ");
    scanf("%d", &sizeLB);
    int LB[sizeLB];
    printf("请输入%d个有序的整数(从小到大): ", sizeLB);
    for (int i = 0; i < sizeLB; i++) {
        scanf("%d", &LB[i]);
    }
    
    // 检查第二个数组是否有序
    if (!isArraySorted(LB, sizeLB)) {
        printf("错误：第二个数组不是有序的！\n");
        return 1;
    }
    
    // 合并数组
    int LC[sizeLA + sizeLB];
    mergeSortedArrays(LA, sizeLA, LB, sizeLB, LC);
    
    // 输出结果
    printf("合并后的有序数组: ");
    printArray(LC, sizeLA + sizeLB);
    
    return 0;
}